home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / AEObjects.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  12.8 KB  |  343 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        AEObjects.p
  3.  
  4.      Contains:    Object Support Library Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1991-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT AEObjects;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __AEOBJECTS__}
  28. {$SETC __AEOBJECTS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC AEObjectsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __OSUTILS__}
  35. {$I OSUtils.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __APPLEEVENTS__}
  38. {$I AppleEvents.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __ERRORS__}
  41. {$I Errors.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __EVENTS__}
  44. {$I Events.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN MAC68K}
  50. {$LibExport+}
  51.  
  52.  
  53. CONST
  54.                                                                 { ***    LOGICAL OPERATOR CONSTANTS    *** }
  55.     kAEAND                        = 'AND ';                        {   0x414e4420   }
  56.     kAEOR                        = 'OR  ';                        {   0x4f522020   }
  57.     kAENOT                        = 'NOT ';                        {   0x4e4f5420   }
  58.                                                                 { ***    ABSOLUTE ORDINAL CONSTANTS    *** }
  59.     kAEFirst                    = 'firs';                        {   0x66697273   }
  60.     kAELast                        = 'last';                        {   0x6c617374   }
  61.     kAEMiddle                    = 'midd';                        {   0x6d696464   }
  62.     kAEAny                        = 'any ';                        {   0x616e7920   }
  63.     kAEAll                        = 'all ';                        {   0x616c6c20   }
  64.                                                                 { ***    RELATIVE ORDINAL CONSTANTS    *** }
  65.     kAENext                        = 'next';                        {   0x6e657874   }
  66.     kAEPrevious                    = 'prev';                        {   0x70726576   }
  67.                                                                 { ***    KEYWORD CONSTANT     *** }
  68.     keyAECompOperator            = 'relo';                        {   0x72656c6f   }
  69.     keyAELogicalTerms            = 'term';                        {   0x7465726d   }
  70.     keyAELogicalOperator        = 'logc';                        {   0x6c6f6763   }
  71.     keyAEObject1                = 'obj1';                        {   0x6f626a31   }
  72.     keyAEObject2                = 'obj2';                        {   0x6f626a32   }
  73.                                                                 {     ... for Keywords for getting fields out of object specifier records.  }
  74.     keyAEDesiredClass            = 'want';                        {   0x77616e74   }
  75.     keyAEContainer                = 'from';                        {   0x66726f6d   }
  76.     keyAEKeyForm                = 'form';                        {   0x666f726d   }
  77.     keyAEKeyData                = 'seld';                        {   0x73656c64   }
  78.  
  79.                                                                 {     ... for Keywords for getting fields out of Range specifier records.  }
  80.     keyAERangeStart                = 'star';                        {   0x73746172   }
  81.     keyAERangeStop                = 'stop';                        {   0x73746f70   }
  82.                                                                 {     ... special handler selectors for OSL Callbacks.  }
  83.     keyDisposeTokenProc            = 'xtok';                        {   0x78746f6b   }
  84.     keyAECompareProc            = 'cmpr';                        {   0x636d7072   }
  85.     keyAECountProc                = 'cont';                        {   0x636f6e74   }
  86.     keyAEMarkTokenProc            = 'mkid';                        {   0x6d6b6964   }
  87.     keyAEMarkProc                = 'mark';                        {   0x6d61726b   }
  88.     keyAEAdjustMarksProc        = 'adjm';                        {   0x61646a6d   }
  89.     keyAEGetErrDescProc            = 'indc';                        {   0x696e6463   }
  90.  
  91. {***    VALUE and TYPE CONSTANTS    ***}
  92.                                                                 {     ... possible values for the keyAEKeyForm field of an object specifier.  }
  93.     formAbsolutePosition        = 'indx';                        {   0x696e6478   }
  94.     formRelativePosition        = 'rele';                        {   0x72656c65   }
  95.     formTest                    = 'test';                        {   0x74657374   }
  96.     formRange                    = 'rang';                        {   0x72616e67   }
  97.     formPropertyID                = 'prop';                        {   0x70726f70   }
  98.     formName                    = 'name';                        {   0x6e616d65   }
  99.                                                                 {     ... relevant types (some of these are often pared with forms above).  }
  100.     typeObjectSpecifier            = 'obj ';                        {   0x6f626a20   }
  101.     typeObjectBeingExamined        = 'exmn';                        {   0x65786d6e   }
  102.     typeCurrentContainer        = 'ccnt';                        {   0x63636e74   }
  103.     typeToken                    = 'toke';                        {   0x746f6b65   }
  104.     typeRelativeDescriptor        = 'rel ';                        {   0x72656c20   }
  105.     typeAbsoluteOrdinal            = 'abso';                        {   0x6162736f   }
  106.     typeIndexDescriptor            = 'inde';                        {   0x696e6465   }
  107.     typeRangeDescriptor            = 'rang';                        {   0x72616e67   }
  108.     typeLogicalDescriptor        = 'logi';                        {   0x6c6f6769   }
  109.     typeCompDescriptor            = 'cmpd';                        {   0x636d7064   }
  110.     typeOSLTokenList            = 'ostl';                        {   0x6F73746C   }
  111.  
  112. { Possible values for flags parameter to AEResolve.  They're additive }
  113.     kAEIDoMinimum                = $0000;
  114.     kAEIDoWhose                    = $0001;
  115.     kAEIDoMarking                = $0004;
  116.     kAEPassSubDescs                = $0008;
  117.     kAEResolveNestedLists        = $0010;
  118.     kAEHandleSimpleRanges        = $0020;
  119.     kAEUseRelativeIterators        = $0040;
  120.  
  121. {*** SPECIAL CONSTANTS FOR CUSTOM WHOSE-CLAUSE RESOLUTION }
  122.     typeWhoseDescriptor            = 'whos';                        {   0x77686f73   }
  123.     formWhose                    = 'whos';                        {   0x77686f73   }
  124.     typeWhoseRange                = 'wrng';                        {   0x77726e67   }
  125.     keyAEWhoseRangeStart        = 'wstr';                        {   0x77737472   }
  126.     keyAEWhoseRangeStop            = 'wstp';                        {   0x77737470   }
  127.     keyAEIndex                    = 'kidx';                        {   0x6b696478   }
  128.     keyAETest                    = 'ktst';                        {   0x6b747374   }
  129.  
  130. {*
  131.     used for rewriting tokens in place of 'ccnt' descriptors
  132.     This record is only of interest to those who, when they...
  133.     ...get ranges as key data in their accessor procs, choose
  134.     ...to resolve them manually rather than call AEResolve again.
  135. *}
  136.  
  137. TYPE
  138.     ccntTokenRecordPtr = ^ccntTokenRecord;
  139.     ccntTokenRecord = RECORD
  140.         tokenClass:                DescType;
  141.         token:                    AEDesc;
  142.     END;
  143.  
  144.     ccntTokenRecPtr                        = ^ccntTokenRecord;
  145.     ccntTokenRecHandle                    = ^ccntTokenRecPtr;
  146. {$IFC OLDROUTINENAMES }
  147.     DescPtr                                = ^AEDesc;
  148.     DescHandle                            = ^DescPtr;
  149. {$ENDC}  {OLDROUTINENAMES}
  150.  
  151. { typedefs providing type checking for procedure pointers }
  152. {$IFC TYPED_FUNCTION_POINTERS}
  153.     OSLAccessorProcPtr = FUNCTION(desiredClass: DescType; {CONST}VAR container: AEDesc; containerClass: DescType; form: DescType; {CONST}VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT): OSErr;
  154. {$ELSEC}
  155.     OSLAccessorProcPtr = ProcPtr;
  156. {$ENDC}
  157.  
  158. {$IFC TYPED_FUNCTION_POINTERS}
  159.     OSLCompareProcPtr = FUNCTION(oper: DescType; {CONST}VAR obj1: AEDesc; {CONST}VAR obj2: AEDesc; VAR result: BOOLEAN): OSErr;
  160. {$ELSEC}
  161.     OSLCompareProcPtr = ProcPtr;
  162. {$ENDC}
  163.  
  164. {$IFC TYPED_FUNCTION_POINTERS}
  165.     OSLCountProcPtr = FUNCTION(desiredType: DescType; containerClass: DescType; {CONST}VAR container: AEDesc; VAR result: LONGINT): OSErr;
  166. {$ELSEC}
  167.     OSLCountProcPtr = ProcPtr;
  168. {$ENDC}
  169.  
  170. {$IFC TYPED_FUNCTION_POINTERS}
  171.     OSLDisposeTokenProcPtr = FUNCTION(VAR unneededToken: AEDesc): OSErr;
  172. {$ELSEC}
  173.     OSLDisposeTokenProcPtr = ProcPtr;
  174. {$ENDC}
  175.  
  176. {$IFC TYPED_FUNCTION_POINTERS}
  177.     OSLGetMarkTokenProcPtr = FUNCTION({CONST}VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc): OSErr;
  178. {$ELSEC}
  179.     OSLGetMarkTokenProcPtr = ProcPtr;
  180. {$ENDC}
  181.  
  182. {$IFC TYPED_FUNCTION_POINTERS}
  183.     OSLGetErrDescProcPtr = FUNCTION(VAR appDescPtr: AEDescPtr): OSErr;
  184. {$ELSEC}
  185.     OSLGetErrDescProcPtr = ProcPtr;
  186. {$ENDC}
  187.  
  188. {$IFC TYPED_FUNCTION_POINTERS}
  189.     OSLMarkProcPtr = FUNCTION({CONST}VAR dToken: AEDesc; {CONST}VAR markToken: AEDesc; index: LONGINT): OSErr;
  190. {$ELSEC}
  191.     OSLMarkProcPtr = ProcPtr;
  192. {$ENDC}
  193.  
  194. {$IFC TYPED_FUNCTION_POINTERS}
  195.     OSLAdjustMarksProcPtr = FUNCTION(newStart: LONGINT; newStop: LONGINT; {CONST}VAR markToken: AEDesc): OSErr;
  196. {$ELSEC}
  197.     OSLAdjustMarksProcPtr = ProcPtr;
  198. {$ENDC}
  199.  
  200.     OSLAccessorUPP = UniversalProcPtr;
  201.     OSLCompareUPP = UniversalProcPtr;
  202.     OSLCountUPP = UniversalProcPtr;
  203.     OSLDisposeTokenUPP = UniversalProcPtr;
  204.     OSLGetMarkTokenUPP = UniversalProcPtr;
  205.     OSLGetErrDescUPP = UniversalProcPtr;
  206.     OSLMarkUPP = UniversalProcPtr;
  207.     OSLAdjustMarksUPP = UniversalProcPtr;
  208.  
  209. CONST
  210.     uppOSLAccessorProcInfo = $000FFFE0;
  211.     uppOSLCompareProcInfo = $00003FE0;
  212.     uppOSLCountProcInfo = $00003FE0;
  213.     uppOSLDisposeTokenProcInfo = $000000E0;
  214.     uppOSLGetMarkTokenProcInfo = $00000FE0;
  215.     uppOSLGetErrDescProcInfo = $000000E0;
  216.     uppOSLMarkProcInfo = $00000FE0;
  217.     uppOSLAdjustMarksProcInfo = $00000FE0;
  218.  
  219. FUNCTION NewOSLAccessorProc(userRoutine: OSLAccessorProcPtr): OSLAccessorUPP;
  220.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  221.     INLINE $2E9F;
  222.     {$ENDC}
  223.  
  224. FUNCTION NewOSLCompareProc(userRoutine: OSLCompareProcPtr): OSLCompareUPP;
  225.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  226.     INLINE $2E9F;
  227.     {$ENDC}
  228.  
  229. FUNCTION NewOSLCountProc(userRoutine: OSLCountProcPtr): OSLCountUPP;
  230.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  231.     INLINE $2E9F;
  232.     {$ENDC}
  233.  
  234. FUNCTION NewOSLDisposeTokenProc(userRoutine: OSLDisposeTokenProcPtr): OSLDisposeTokenUPP;
  235.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  236.     INLINE $2E9F;
  237.     {$ENDC}
  238.  
  239. FUNCTION NewOSLGetMarkTokenProc(userRoutine: OSLGetMarkTokenProcPtr): OSLGetMarkTokenUPP;
  240.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  241.     INLINE $2E9F;
  242.     {$ENDC}
  243.  
  244. FUNCTION NewOSLGetErrDescProc(userRoutine: OSLGetErrDescProcPtr): OSLGetErrDescUPP;
  245.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  246.     INLINE $2E9F;
  247.     {$ENDC}
  248.  
  249. FUNCTION NewOSLMarkProc(userRoutine: OSLMarkProcPtr): OSLMarkUPP;
  250.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  251.     INLINE $2E9F;
  252.     {$ENDC}
  253.  
  254. FUNCTION NewOSLAdjustMarksProc(userRoutine: OSLAdjustMarksProcPtr): OSLAdjustMarksUPP;
  255.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  256.     INLINE $2E9F;
  257.     {$ENDC}
  258.  
  259. FUNCTION CallOSLAccessorProc(desiredClass: DescType; {CONST}VAR container: AEDesc; containerClass: DescType; form: DescType; {CONST}VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT; userRoutine: OSLAccessorUPP): OSErr;
  260.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  261.     INLINE $205F, $4E90;
  262.     {$ENDC}
  263.  
  264. FUNCTION CallOSLCompareProc(oper: DescType; {CONST}VAR obj1: AEDesc; {CONST}VAR obj2: AEDesc; VAR result: BOOLEAN; userRoutine: OSLCompareUPP): OSErr;
  265.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  266.     INLINE $205F, $4E90;
  267.     {$ENDC}
  268.  
  269. FUNCTION CallOSLCountProc(desiredType: DescType; containerClass: DescType; {CONST}VAR container: AEDesc; VAR result: LONGINT; userRoutine: OSLCountUPP): OSErr;
  270.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  271.     INLINE $205F, $4E90;
  272.     {$ENDC}
  273.  
  274. FUNCTION CallOSLDisposeTokenProc(VAR unneededToken: AEDesc; userRoutine: OSLDisposeTokenUPP): OSErr;
  275.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  276.     INLINE $205F, $4E90;
  277.     {$ENDC}
  278.  
  279. FUNCTION CallOSLGetMarkTokenProc({CONST}VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc; userRoutine: OSLGetMarkTokenUPP): OSErr;
  280.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  281.     INLINE $205F, $4E90;
  282.     {$ENDC}
  283.  
  284. FUNCTION CallOSLGetErrDescProc(VAR appDescPtr: AEDescPtr; userRoutine: OSLGetErrDescUPP): OSErr;
  285.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  286.     INLINE $205F, $4E90;
  287.     {$ENDC}
  288.  
  289. FUNCTION CallOSLMarkProc({CONST}VAR dToken: AEDesc; {CONST}VAR markToken: AEDesc; index: LONGINT; userRoutine: OSLMarkUPP): OSErr;
  290.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  291.     INLINE $205F, $4E90;
  292.     {$ENDC}
  293.  
  294. FUNCTION CallOSLAdjustMarksProc(newStart: LONGINT; newStop: LONGINT; {CONST}VAR markToken: AEDesc; userRoutine: OSLAdjustMarksUPP): OSErr;
  295.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  296.     INLINE $205F, $4E90;
  297.     {$ENDC}
  298.  
  299.  
  300.  
  301. FUNCTION AEObjectInit: OSErr;
  302. { Not done by inline, but by direct linking into code.  It sets up the pack
  303.   such that further calls can be via inline }
  304. FUNCTION AESetObjectCallbacks(myCompareProc: OSLCompareUPP; myCountProc: OSLCountUPP; myDisposeTokenProc: OSLDisposeTokenUPP; myGetMarkTokenProc: OSLGetMarkTokenUPP; myMarkProc: OSLMarkUPP; myAdjustMarksProc: OSLAdjustMarksUPP; myGetErrDescProcPtr: OSLGetErrDescUPP): OSErr;
  305.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  306.     INLINE $303C, $0E35, $A816;
  307.     {$ENDC}
  308. FUNCTION AEResolve({CONST}VAR objectSpecifier: AEDesc; callbackFlags: INTEGER; VAR theToken: AEDesc): OSErr;
  309.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  310.     INLINE $303C, $0536, $A816;
  311.     {$ENDC}
  312. FUNCTION AEInstallObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  313.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  314.     INLINE $303C, $0937, $A816;
  315.     {$ENDC}
  316. FUNCTION AERemoveObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; isSysHandler: BOOLEAN): OSErr;
  317.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  318.     INLINE $303C, $0738, $A816;
  319.     {$ENDC}
  320. FUNCTION AEGetObjectAccessor(desiredClass: DescType; containerType: DescType; VAR accessor: OSLAccessorUPP; VAR accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  321.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  322.     INLINE $303C, $0939, $A816;
  323.     {$ENDC}
  324. FUNCTION AEDisposeToken(VAR theToken: AEDesc): OSErr;
  325.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  326.     INLINE $303C, $023A, $A816;
  327.     {$ENDC}
  328. FUNCTION AECallObjectAccessor(desiredClass: DescType; {CONST}VAR containerToken: AEDesc; containerClass: DescType; keyForm: DescType; {CONST}VAR keyData: AEDesc; VAR token: AEDesc): OSErr;
  329.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  330.     INLINE $303C, $0C3B, $A816;
  331.     {$ENDC}
  332.  
  333. {$ALIGN RESET}
  334. {$POP}
  335.  
  336. {$SETC UsingIncludes := AEObjectsIncludes}
  337.  
  338. {$ENDC} {__AEOBJECTS__}
  339.  
  340. {$IFC NOT UsingIncludes}
  341.  END.
  342. {$ENDC}
  343.